home *** CD-ROM | disk | FTP | other *** search
/ Practical Algorithms for Image Analysis / Practical Algorithms for Image Analysis.iso / TARFILE.GZ / tarfile / ch_3.5 / bcd / loc.c < prev    next >
Encoding:
C/C++ Source or Header  |  1999-09-11  |  2.3 KB  |  81 lines

  1. /*
  2.  * This program is used with permission from I. Cox.
  3.  * Please reference:
  4.  * R. A. Boie, I. Cox, Proc. IEEE 1st Int. Conf. Computer Vision,
  5.  * London, 1987, pp. 450-456.
  6.  */
  7. #include <stdio.h>
  8. #include <math.h>
  9. #include "edge_finder.h"
  10.  
  11. extern struct image *my_image;
  12. extern int nxXny;
  13.  
  14. int
  15. image_locx (register int iy, register int ix, register int index)
  16. {                               /* index = iy*nx+ix */
  17.   register int *imP;
  18.   register int nx = my_image->nx;
  19.  
  20. /*      if(index<=0 || index>=nxXny) */
  21.   if (ix < 2 || ix > nx - 2 || iy < 0 || iy > my_image->ny - 1)
  22.     return (0);
  23.  
  24. /*      return(gauss[iy*nx+x-1]+gauss[iy*nx+ix+1]-2*gauss[iy*nx+ix]); */
  25.  
  26. /*      return(idx[iy*nx+ix] - idx[iy*nx+ix-1]); */
  27.   imP = &my_image->idx[index];
  28.   return (*imP - *(imP - 1));
  29. }
  30.  
  31. int
  32. image_locy (register int iy, register int ix, register int index)
  33. {                               /* index = iy*nx+ix */
  34.   register int *imP;
  35.   register int nx = my_image->nx;
  36.  
  37. /*      if(index<nx || index>=nxXny) */
  38.   if (ix < 0 || ix > nx - 1 || iy < 2 || iy > my_image->ny - 2)
  39.     return (0);
  40.  
  41. /*      return(gauss[(iy-1)*nx+ix]+gauss[(iy+1)*nx+ix]-2*gauss[iy*nx+ix]); */
  42.  
  43. /*      return(idy[iy*nx+ix] - idy[(iy-1)*nx+ix]); */
  44.   imP = &my_image->idy[index];
  45.   return (*imP - *(imP - nx));
  46. }
  47.  
  48. int
  49. image_loc45 (register int iy, register int ix, register int index)
  50. {                               /* index = iy*nx+ix */
  51.   register int *imP;
  52.   register int nx = my_image->nx;
  53.  
  54. /*      if(index<nx || index>=nxXny) */
  55.   if (ix < 2 || ix > nx - 2 || iy < 2 || iy > my_image->ny - 2)
  56.     return (0);
  57.  
  58. /*      return(gauss[(iy-1)*nx+ix+1]+gauss[(iy+1)*nx+ix-1]-2*gauss[iy*nx+ix]); */
  59.  
  60. /*      return(id45[iy*nx+ix] - id45[(iy-1)*nx+ix+1]); */
  61.   imP = &my_image->id45[index];
  62.   return (*imP - *(imP - nx + 1));
  63. }
  64.  
  65. int
  66. image_loc135 (register int iy, register int ix, register int index)
  67. {                               /* index = iy*nx+ix */
  68.   register int *imP;
  69.   register int nx = my_image->nx;
  70.  
  71. /*      if(index<=nx || index>=nxXny) */
  72.   if (ix < 2 || ix > nx - 2 || iy < 2 || iy > my_image->ny - 2)
  73.     return (0);
  74.  
  75. /*      return(gauss[(iy-1)*nx+ix-1]+gauss[(iy+1)*nx+ix+1]-2*gauss[iy*nx+ix]); */
  76.  
  77. /*      return(id135[iy*nx+ix] - id135[(iy-1)*nx+ix-1]); */
  78.   imP = &my_image->id135[index];
  79.   return (*imP - *(imP - nx - 1));
  80. }
  81.